/**
 * MetasoCreator API接口配置文件
 * 功能：配置axios实例、请求拦截器、响应拦截器等
 * 作者：AI Assistant
 * 创建时间：2024-12-25
 */
import axios from 'axios'
import { ElMessage } from 'element-plus'

// 创建axios实例
const api = axios.create({
    baseURL: 'http://127.0.0.1:5000/api',
    timeout: 10000,
    headers: {
        'Content-Type': 'application/json'
    }
})

// 请求拦截器
api.interceptors.request.use(
    (config) => {
        // 在发送请求之前做些什么
        console.log('发送请求:', config.url)
        return config
    },
    (error) => {
        // 对请求错误做些什么
        console.error('请求错误:', error)
        return Promise.reject(error)
    }
)

// 响应拦截器
api.interceptors.response.use(
    (response) => {
        // 对响应数据做点什么
        console.log('响应数据:', response.data)
        return response.data
    },
    (error) => {
        // 对响应错误做点什么
        console.error('响应错误:', error)
        
        let message = '请求失败'
        if (error.response) {
            switch (error.response.status) {
                case 400:
                    message = '请求参数错误'
                    break
                case 401:
                    message = '未授权访问'
                    break
                case 403:
                    message = '禁止访问'
                    break
                case 404:
                    message = '请求资源不存在'
                    break
                case 500:
                    message = '服务器内部错误'
                    break
                default:
                    message = `请求失败: ${error.response.status}`
            }
        } else if (error.request) {
            message = '网络连接失败'
        }
        
        ElMessage.error(message)
        return Promise.reject(error)
    }
)

// 搜索API
export const searchAPI = {
    // 网页搜索
    webSearch: (query, options = {}) => {
        return api.post('/search/', {
            q: query,
            scope: 'webpage',
            ...options
        })
    },
    
    // 学术搜索
    academicSearch: (query, options = {}) => {
        return api.post('/search/', {
            q: query,
            scope: 'scholar',
            ...options
        })
    },
    
    // 多媒体搜索
    mediaSearch: (query, scope, options = {}) => {
        return api.post('/search/', {
            q: query,
            scope, // 'image', 'video', 'podcast'
            ...options
        })
    },
    
    // 获取搜索建议
    getSuggestions: (query, limit = 5) => {
        return api.get('/search/suggestions', {
            params: { q: query, limit }
        })
    },
    
    // 获取搜索历史
    getHistory: (userId, limit = 20) => {
        return api.get('/search/history', {
            params: { user_id: userId, limit }
        })
    },
    
    // 清除搜索历史
    clearHistory: (userId) => {
        return api.delete('/search/history', {
            data: { user_id: userId }
        })
    }
}

export const readerAPI = {
    // 读取网页内容
    readUrl: (url) => {
        return api.get('/reader/', {
            params: { url }
        })
    }
}

export const qaAPI = {
    // 智能问答
    ask: (messages, options = {}) => {
        return api.post('/chat/completions', {
            messages,
            scope: options.scope || 'webpage',
            model: options.model || 'fast_thinking',
            ...options
        })
    },
    
    // 测试API连接
    test: () => {
        return api.get('/chat/test')
    }
}

export default api